xen/xen
xen/xen-syms
xen/xen.*
+install/boot/System.map-2.6.9-xen0
+install/boot/System.map-2.6.9-xenU
+install/boot/config-2.6.9-xen0
+install/boot/config-2.6.9-xenU
+install/boot/vmlinux-syms-2.6.9-xen0
+install/boot/vmlinux-syms-2.6.9-xenU
+install/boot/vmlinuz-2.6.9-xen0
+install/boot/vmlinuz-2.6.9-xenU
+install/boot/xen-syms
+install/boot/xen.gz
+install/etc/xen/scripts/block-enbd
+install/etc/xen/scripts/block-file
+install/etc/xen/scripts/network
+install/etc/xen/scripts/vif-bridge
+install/etc/xen/xend-config.sxp
+install/etc/xen/xmexample1
+install/etc/xen/xmexample2
+install/lib/modules/2.6.9-xen0/build
+install/lib/modules/2.6.9-xen0/kernel/crypto/crc32c.ko
+install/lib/modules/2.6.9-xen0/kernel/crypto/des.ko
+install/lib/modules/2.6.9-xen0/kernel/crypto/md5.ko
+install/lib/modules/2.6.9-xen0/kernel/crypto/sha1.ko
+install/lib/modules/2.6.9-xen0/kernel/drivers/pcmcia/ds.ko
+install/lib/modules/2.6.9-xen0/kernel/drivers/pcmcia/pcmcia_core.ko
+install/lib/modules/2.6.9-xen0/kernel/drivers/pcmcia/yenta_socket.ko
+install/lib/modules/2.6.9-xen0/kernel/fs/exportfs/exportfs.ko
+install/lib/modules/2.6.9-xen0/kernel/fs/fat/fat.ko
+install/lib/modules/2.6.9-xen0/kernel/fs/msdos/msdos.ko
+install/lib/modules/2.6.9-xen0/kernel/fs/nfsd/nfsd.ko
+install/lib/modules/2.6.9-xen0/kernel/fs/vfat/vfat.ko
+install/lib/modules/2.6.9-xen0/kernel/net/ipv4/netfilter/ip_conntrack.ko
+install/lib/modules/2.6.9-xen0/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko
+install/lib/modules/2.6.9-xen0/kernel/net/ipv4/netfilter/ip_tables.ko
+install/lib/modules/2.6.9-xen0/modules.alias
+install/lib/modules/2.6.9-xen0/modules.ccwmap
+install/lib/modules/2.6.9-xen0/modules.dep
+install/lib/modules/2.6.9-xen0/modules.ieee1394map
+install/lib/modules/2.6.9-xen0/modules.inputmap
+install/lib/modules/2.6.9-xen0/modules.isapnpmap
+install/lib/modules/2.6.9-xen0/modules.pcimap
+install/lib/modules/2.6.9-xen0/modules.symbols
+install/lib/modules/2.6.9-xen0/modules.usbmap
+install/lib/modules/2.6.9-xen0/source
+install/lib/modules/2.6.9-xenU/build
+install/lib/modules/2.6.9-xenU/kernel/crypto/crc32c.ko
+install/lib/modules/2.6.9-xenU/kernel/crypto/md5.ko
+install/lib/modules/2.6.9-xenU/kernel/drivers/block/loop.ko
+install/lib/modules/2.6.9-xenU/kernel/drivers/block/nbd.ko
+install/lib/modules/2.6.9-xenU/kernel/drivers/scsi/scsi_mod.ko
+install/lib/modules/2.6.9-xenU/kernel/drivers/scsi/sd_mod.ko
+install/lib/modules/2.6.9-xenU/kernel/fs/fat/fat.ko
+install/lib/modules/2.6.9-xenU/kernel/fs/msdos/msdos.ko
+install/lib/modules/2.6.9-xenU/kernel/fs/vfat/vfat.ko
+install/lib/modules/2.6.9-xenU/kernel/lib/libcrc32c.ko
+install/lib/modules/2.6.9-xenU/source
+install/lib/python/xen/__init__.py
+install/lib/python/xen/lowlevel/__init__.py
+install/lib/python/xen/sv/CreateDomain.py
+install/lib/python/xen/sv/Daemon.py
+install/lib/python/xen/sv/DomInfo.py
+install/lib/python/xen/sv/DomList.py
+install/lib/python/xen/sv/GenTabbed.py
+install/lib/python/xen/sv/HTMLBase.py
+install/lib/python/xen/sv/Main.py
+install/lib/python/xen/sv/MigrateDomain.py
+install/lib/python/xen/sv/NodeInfo.py
+install/lib/python/xen/sv/RestoreDomain.py
+install/lib/python/xen/sv/SaveDomain.py
+install/lib/python/xen/sv/TabView.py
+install/lib/python/xen/sv/Wizard.py
+install/lib/python/xen/sv/__init__.py
+install/lib/python/xen/sv/params.py
+install/lib/python/xen/sv/util.py
+install/lib/python/xen/util/Brctl.py
+install/lib/python/xen/util/__init__.py
+install/lib/python/xen/util/console_client.py
+install/lib/python/xen/util/ip.py
+install/lib/python/xen/util/tempfile.py
+install/lib/python/xen/xend/Args.py
+install/lib/python/xen/xend/Blkctl.py
+install/lib/python/xen/xend/EventServer.py
+install/lib/python/xen/xend/EventTypes.py
+install/lib/python/xen/xend/PrettyPrint.py
+install/lib/python/xen/xend/Vifctl.py
+install/lib/python/xen/xend/XendAsynchProtocol.py
+install/lib/python/xen/xend/XendClient.py
+install/lib/python/xen/xend/XendConsole.py
+install/lib/python/xen/xend/XendDB.py
+install/lib/python/xen/xend/XendDmesg.py
+install/lib/python/xen/xend/XendDomain.py
+install/lib/python/xen/xend/XendDomainConfig.py
+install/lib/python/xen/xend/XendDomainInfo.py
+install/lib/python/xen/xend/XendError.py
+install/lib/python/xen/xend/XendLogging.py
+install/lib/python/xen/xend/XendMigrate.py
+install/lib/python/xen/xend/XendNode.py
+install/lib/python/xen/xend/XendProtocol.py
+install/lib/python/xen/xend/XendRoot.py
+install/lib/python/xen/xend/XendVnet.py
+install/lib/python/xen/xend/__init__.py
+install/lib/python/xen/xend/encode.py
+install/lib/python/xen/xend/server/SrvBase.py
+install/lib/python/xen/xend/server/SrvConsole.py
+install/lib/python/xen/xend/server/SrvConsoleDir.py
+install/lib/python/xen/xend/server/SrvDaemon.py
+install/lib/python/xen/xend/server/SrvDeviceDir.py
+install/lib/python/xen/xend/server/SrvDir.py
+install/lib/python/xen/xend/server/SrvDmesg.py
+install/lib/python/xen/xend/server/SrvDomain.py
+install/lib/python/xen/xend/server/SrvDomainDir.py
+install/lib/python/xen/xend/server/SrvEventDir.py
+install/lib/python/xen/xend/server/SrvNode.py
+install/lib/python/xen/xend/server/SrvRoot.py
+install/lib/python/xen/xend/server/SrvServer.py
+install/lib/python/xen/xend/server/SrvVnetDir.py
+install/lib/python/xen/xend/server/SrvXendLog.py
+install/lib/python/xen/xend/server/__init__.py
+install/lib/python/xen/xend/server/blkif.py
+install/lib/python/xen/xend/server/channel.py
+install/lib/python/xen/xend/server/console.py
+install/lib/python/xen/xend/server/controller.py
+install/lib/python/xen/xend/server/domain.py
+install/lib/python/xen/xend/server/messages.py
+install/lib/python/xen/xend/server/netif.py
+install/lib/python/xen/xend/server/params.py
+install/lib/python/xen/xend/sxp.py
+install/lib/python/xen/xm/__init__.py
+install/lib/python/xen/xm/create.py
+install/lib/python/xen/xm/destroy.py
+install/lib/python/xen/xm/help.py
+install/lib/python/xen/xm/main.py
+install/lib/python/xen/xm/migrate.py
+install/lib/python/xen/xm/opts.py
+install/lib/python/xen/xm/shutdown.py
+install/usr/bin/miniterm
+install/usr/bin/xen_cpuperf
+install/usr/bin/xencons
+install/usr/bin/xentrace
+install/usr/bin/xentrace_format
+install/usr/include/xc.h
+install/usr/include/xen/COPYING
+install/usr/include/xen/arch-x86_32.h
+install/usr/include/xen/arch-x86_64.h
+install/usr/include/xen/dom0_ops.h
+install/usr/include/xen/event_channel.h
+install/usr/include/xen/grant_table.h
+install/usr/include/xen/io/blkif.h
+install/usr/include/xen/io/domain_controller.h
+install/usr/include/xen/io/netif.h
+install/usr/include/xen/linux/privcmd.h
+install/usr/include/xen/linux/suspend.h
+install/usr/include/xen/physdev.h
+install/usr/include/xen/sched_ctl.h
+install/usr/include/xen/trace.h
+install/usr/include/xen/xen.h
+install/usr/man/man1/xentrace_format.1
+install/usr/man/man8/xentrace.8
+install/usr/sbin/netfix
+install/usr/sbin/xend
+install/usr/sbin/xensv
+install/usr/sbin/xfrd
+install/usr/sbin/xm
+install/var/xen/sv/Main.rpy
+install/var/xen/sv/images/destroy.png
+install/var/xen/sv/images/finish.png
+install/var/xen/sv/images/left-end-highlight.jpg
+install/var/xen/sv/images/left-end-no-highlight.jpg
+install/var/xen/sv/images/middle-highlight.jpg
+install/var/xen/sv/images/middle-no-highlight.jpg
+install/var/xen/sv/images/next.png
+install/var/xen/sv/images/orb_01.jpg
+install/var/xen/sv/images/orb_02.jpg
+install/var/xen/sv/images/pause.png
+install/var/xen/sv/images/previous.png
+install/var/xen/sv/images/reboot.png
+install/var/xen/sv/images/right-end-highlight.jpg
+install/var/xen/sv/images/right-end-no-highlight.jpg
+install/var/xen/sv/images/seperator-left-highlight.jpg
+install/var/xen/sv/images/seperator-right-highlight.jpg
+install/var/xen/sv/images/seperator.jpg
+install/var/xen/sv/images/shutdown.png
+install/var/xen/sv/images/small-destroy.png
+install/var/xen/sv/images/small-pause.png
+install/var/xen/sv/images/small-unpause.png
+install/var/xen/sv/images/unpause.png
+install/var/xen/sv/images/xen.png
+install/var/xen/sv/inc/script.js
+install/var/xen/sv/inc/style.css
\documentclass[11pt,twoside,final,openright]{xenstyle}
-\usepackage{a4,graphicx,parskip,setspace,times}
+\usepackage{a4,graphicx,parskip,setspace,times,xspace}
\setstretch{1.1}
+
+\def\Xend{{Xend}\xspace}
+\def\xend{{xend}\xspace}
+
+
\begin{document}
% TITLE PAGE
\newcommand{\path}[1]{{\tt #1}}
+
\part{Introduction and Tutorial}
\chapter{Introduction}
\section{Structure of a Xen-Based System}
A Xen system has multiple layers, the lowest and most privileged of
-which is Xen itself. Xen in turn may host multiple {\em guest}
-operating systems, each of which is executed within a secure virtual
-machine (in Xen terminology, a {\em domain}). Domains are scheduled by
-Xen to make effective use of the available physical CPUs. Each guest
-OS manages its own applications, which includes responsibility for
-scheduling each application within the time allotted to the VM by Xen.
-
-The first domain, {\em Domain 0}, is created automatically when the
+which is Xen itself.
+Xen in turn may host multiple {\em guest} operating systems, each of
+which is executed within a secure virtual machine (in Xen terminology,
+a {\em domain}). Domains are scheduled by Xen to make effective use of
+the available physical CPUs. Each guest OS manages its own
+applications, which includes responsibility for scheduling each
+application within the time allotted to the VM by Xen.
+
+The first domain, {\em domain 0}, is created automatically when the
system boots and has special management privileges. Domain 0 builds
other domains and manages their virtual devices. It also performs
administrative tasks such as suspending, resuming and migrating other
virtual machines.
-Within domain 0, a process called `xend' runs to manage the system.
-Xend is responsible for managing virtual machines and providing access
-to their consoles. Commands are issued to Xend over an HTTP
+Within domain 0, a process called \xend runs to manage the system.
+\Xend is responsible for managing virtual machines and providing access
+to their consoles. Commands are issued to \xend over an HTTP
interface, either from a command-line tool or from a web browser.
\section{Hardware Support}
\begin{itemize}
\item Build Xen
-\item Build the control tools, including Xend
+\item Build the control tools, including \xend
\item Download (if necessary) and unpack the Linux 2.6 source code,
and patch it for use with Xen
\item Build a Linux kernel to use in domain 0 and a smaller
To start the control daemon, type \\ \verb!# xend start! \\ If you
wish to start the daemon automatically, see the instructions in
-Chapter~\ref{cha:xend}. Once the daemon is running, you can use the
+Section~\ref{s:xend}. Once the daemon is running, you can use the
{\tt xm} tool to monitor and maintain the domains running on your
system. This chapter provides only a brief tutorial: we provide full
-details of the {\tt xm} tool in Chapter~\ref{cha:xm}.
+details of the {\tt xm} tool in Section~\ref{s:xm}.
%\section{From the web interface}
%
You may also want to edit the {\bf vif} variable in order to choose
the MAC address of the virtual ethernet interface yourself. For
example: \\ \verb_vif = ['mac=00:06:AA:F6:BB:B3']_\\ If you do not set
-this variable, Xend will automatically generate a random MAC address
+this variable, \xend will automatically generate a random MAC address
from an unused range.
If you don't have a \path{xmdefconfig} file, simply create your own
The {\tt xm list} command also supports a long output format when the
{\tt -l} switch is used. This outputs the fulls details of the
-running domains in Xend's SXP configuration format.
+running domains in \xend's SXP configuration format.
For example, suppose the system is running the ttylinux domain as
described earlier. The list command should produce output somewhat
whilst that domain continues to perform its usual activities --- from
the user's perspective, the migration should be imperceptible.
-To perform a live migration, both hosts must be running Xen / Xend and
+To perform a live migration, both hosts must be running Xen / \xend and
the destination host must have sufficient resources (e.g. memory
capacity) to accommodate the domain after the move.
contribute some, although obviously users would have to read the LVM
docs to do advanced stuff.
-\part{Quick Reference}
-
-\chapter{Domain Configuration Files}
-\label{cha:config}
-
-Xen configuration files contain the following standard variables.
-Unless otherwise stated, configuration items should be enclosed in
-quotes (i.e. {\tt '...'} or {\tt ``....''})):
-
-\begin{description}
-\item[kernel] Path to the kernel image (on the server).
-\item[ramdisk] Path to a ramdisk image (optional).
-% \item[builder] The name of the domain build function (e.g. {\tt'linux'} or {\tt'netbsd'}.
-\item[memory] Memory size in megabytes.
-\item[cpu] CPU to assign this domain to.
-\item[nics] Number of virtual network interfaces.
-\item[vif] List of MAC addresses (random addresses are assigned if not
- given) and / or bridges to use for the domains network
- interfaces. e.g.
-\begin{verbatim}
-vif = [ 'mac=aa:00:00:00:00:11, bridge=xen-br0',
- 'bridge=xen-br1' ]
-\end{verbatim}
- to assign a MAC address and bridge to the first interface and assign
- a different bridge to the second interface, leaving Xend to choose
- the MAC address.
-\item[disk] List of block devices to export to the domain. e.g. \\
- \verb_disk = [ 'phy:hda1,sda1,r' ]_ \\
- exports device \path{/dev/hda1} to the domain, as \path{/dev/sda1} with
- readonly access being allowed. \\
- \verb_disk = [ 'phy:hda7,sda2,w', 'phy:hdb2,sda,w!' ]_ \\
- exports device \path{/dev/hda7} to the domain as \path{/dev/sda2} with
- write access enabled and \path{/dev/hdb2} as \path{/dev/sda} with write access
- force enabled (bypassing safety checks, as indicated by the {\tt !}).
-\item[dhcp] Set to {\tt 'dhcp'} if you want to DHCP allocate the IP
-address.
-\item[netmask] IP netmask.
-\item[gateway] IP address for the gateway (if any).
-\item[hostname] Set the hostname for the virtual machine.
-\item[root] Set the root device.
-\item[nfs\_server] IP address for the NFS server.
-\item[nfs\_root] Path of the root filesystem on the NFS server.
-\item[extra] Extra string to append to the kernel command line.
-\item[restart] Three possible options:
- \begin{description}
- \item[always] Always restart the domain, no matter what
- its exit code is.
- \item[never] Never restart the domain.
- \item[onreboot] (restart the domain if it requests reboot).
- \end{description}
-\end{description}
+\part{User Reference Documentation}
-For additional flexibility, it is also possible to include Python
-scripting commands in configuration files. An example of this is the
-\path{xmexample} file in order to handle the {\tt vmid} variable.
+\chapter{Control Software}
-\chapter{Xend (Node control daemon)}
-\label{cha:xend}
+\section{\Xend (Node control daemon)}
+\label{s:xend}
-The Xen Daemon (Xend) performs system management functions related to
+The Xen Daemon (\Xend) performs system management functions related to
virtual machines. It forms a central point of control for a machine
-and can be controlled using an HTTP-based protocol. Xend must be
+and can be controlled using an HTTP-based protocol. \Xend must be
running in order to start and manage virtual machines.
-Xend must be run as root because it needs access to privileged system
+\Xend must be run as root because it needs access to privileged system
management functions. A small set of commands may be issued on the
-Xend command line:
+\xend command line:
\begin{tabular}{ll}
-\verb!# xend start! & start Xend, if not already running \\
-\verb!# xend stop! & stop Xend if already running \\
-\verb!# xend restart! & restart Xend if running, otherwise start it \\
-\verb!# xend trace_start! & start Xend, with very detailed debug logging \\
-\verb!# xend status! & indicates Xend status by its return code
+\verb!# xend start! & start \xend, if not already running \\
+\verb!# xend stop! & stop \xend if already running \\
+\verb!# xend restart! & restart \xend if running, otherwise start it \\
+\verb!# xend trace_start! & start \xend, with very detailed debug logging \\
+\verb!# xend status! & indicates \xend status by its return code
\end{tabular}
-A SysV init script called {\tt xend} is provided to start Xend at boot
+A SysV init script called {\tt xend} is provided to start \xend at boot
time. {\tt make install} installs this script in {\path{/etc/init.d}.
To enable it, you have to make symbolic links in the appropriate
runlevel directories or use the {\tt chkconfig} tool, where available.
-Once Xend is running, more sophisticated administration can be done
-using the xm tool (see Chapter~\ref{cha:xm}) and the experimental
-Xensv web interface (see Chapter~\ref{cha:xensv}).
+Once \xend is running, more sophisticated administration can be done
+using the xm tool (see Section~\ref{s:xm}) and the experimental
+Xensv web interface (see Section~\ref{s:xensv}).
-\chapter{The xm tool}
-\label{cha:xm}
+\section{The xm tool}
+\label{s:xm}
The xm tool is the primary tool for managing Xen from the console.
The general format of an xm command line is:
\item[atropos] Set the atropos parameters for a domain.
\item[rrobin] Set the round robin time slice for the system.
\item[info] Get information about the Xen host.
-\item[call] Call a Xend HTTP API function directly.
+\item[call] Call a \xend HTTP API function directly.
\end{description}
For a detailed overview of switches, arguments and variables to each command
# xm help command
\end{verbatim}
-\chapter{Xensv (Web control interface)}
-\label{cha:xensv}
+
+\section{Xensv (Web control interface)}
+\label{s:xensv}
Xensv is the experimental web control interface for managing a Xen
machine. It can be used to perform some (but not yet all) of the
management tasks that can be done using the xm tool.
It can be started using:\\ \verb_# xensv start_ \\ and
-stopped using: \verb_# xensv stop_ \\ It will automatically start Xend
+stopped using: \verb_# xensv stop_ \\ It will automatically start \xend
if it is not already running.
By default, Xensv will serve out the web interface on port 8080. This
-\chapter{Glossary}
-
-\begin{description}
-\item[Atropos] One of the CPU schedulers provided by Xen.
- Atropos provides domains with absolute shares
- of the CPU, with timeliness guarantees and a
- mechanism for sharing out `slack time'.
-
-\item[BVT] The BVT scheduler is used to give proportional
- fair shares of the CPU to domains.
-
-\item[Exokernel] A minimal piece of privileged code, similar to
- a {\bf microkernel} but providing a more
- `hardware-like' interface to the tasks it
- manages. This is similar to a paravirtualising
- VMM like {\bf Xen} but was designed as a new
- operating system structure, rather than
- specifically to run multiple conventional OSs.
-
-\item[Domain] A domain is the execution context that
- contains a running { \bf virtual machine }.
- The relationship between virtual machines
- and domains on Xen is similar to that between
- programs and processes in an operating
- system: a virtual machine is a persistent
- entity that resides on disk (somewhat like
- a program). When it is loaded for execution,
- it runs in a domain. Each domain has a
- { \bf domain ID }.
-
-\item[Domain 0] The first domain to be started on a Xen
- machine. Domain 0 is responsible for managing
- the system.
-
-\item[Domain ID] A unique identifier for a { \bf domain },
- analogous to a process ID in an operating
- system. Apart from domain
-
-\item[Full virtualisation] An approach to virtualisation which
- requires no modifications to the hosted
- operating system, providing the illusion of
- a complete system of real hardware devices.
-
-\item[Hypervisor] An alternative term for { \bf VMM }, used
- because it means `beyond supervisor',
- since it is responsible for managing multiple
- `supervisor' kernels.
-
-\item[Live migration] A technique for moving a running virtual
- machine to another physical host, without
- stopping it or the services running on it.
-
-\item[Microkernel] A small base of code running at the highest
- hardware privilege level. A microkernel is
- responsible for sharing CPU and memory (and
- sometimes other devices) between less
- privileged tasks running on the system.
- This is similar to a VMM, particularly a
- {\bf paravirtualising} VMM but typically
- addressing a different problem space and
- providing different kind of interface.
-
-\item[NetBSD/Xen] A port of NetBSD to the Xen architecture.
-\item[Paravirtualisation] An approach to virtualisation which requires
- modifications to the operating system in
- order to run in a virtual machine. Xen
- uses paravirtualisation but preserves
- binary compatibility for user space
- applications.
+\chapter{Domain Configuration}
+\label{cha:config}
-\item[Shadow pagetables] A technique for hiding the layout of machine
- memory from a virtual machine's operating
- system. Used in some {\bf VMM}s to provide
- the illusion of contiguous physical memory,
- in Xen this is used during
- {\bf live migration}.
-\item[Virtual Machine] The environment in which a hosted operating
- system runs, providing the abstraction of a
- dedicated machine. A virtual machine may
- be identical to the underlying hardware (as
- in { \bf full virtualisation }, or it may
- differ, as in { \bf paravirtualisation }.
+\section{Configuration Files}
+\label{s:cfiles}
-\item[VMM] Virtual Machine Monitor - the software that
- allows multiple virtual machines to be
- multiplexed on a single physical machine.
+Xen configuration files contain the following standard variables.
+Unless otherwise stated, configuration items should be enclosed in
+quotes (i.e. {\tt '...'} or {\tt ``....''})):
-\item[Xen] Xen is a paravirtualising virtual machine
- monitor, developed primarily by the
- Systems Research Group at the University
- of Cambridge Computer Laboratory.
+\begin{description}
+\item[kernel] Path to the kernel image (on the server).
+\item[ramdisk] Path to a ramdisk image (optional).
+% \item[builder] The name of the domain build function (e.g. {\tt'linux'} or {\tt'netbsd'}.
+\item[memory] Memory size in megabytes.
+\item[cpu] CPU to assign this domain to.
+\item[nics] Number of virtual network interfaces.
+\item[vif] List of MAC addresses (random addresses are assigned if not
+ given) and / or bridges to use for the domains network
+ interfaces. e.g.
+\begin{verbatim}
+vif = [ 'mac=aa:00:00:00:00:11, bridge=xen-br0',
+ 'bridge=xen-br1' ]
+\end{verbatim}
+ to assign a MAC address and bridge to the first interface and assign
+ a different bridge to the second interface, leaving \xend to choose
+ the MAC address.
+\item[disk] List of block devices to export to the domain. e.g. \\
+ \verb_disk = [ 'phy:hda1,sda1,r' ]_ \\
+ exports device \path{/dev/hda1} to the domain, as \path{/dev/sda1} with
+ readonly access being allowed. \\
+ \verb_disk = [ 'phy:hda7,sda2,w', 'phy:hdb2,sda,w!' ]_ \\
+ exports device \path{/dev/hda7} to the domain as \path{/dev/sda2} with
+ write access enabled and \path{/dev/hdb2} as \path{/dev/sda} with write access
+ force enabled (bypassing safety checks, as indicated by the {\tt !}).
+\item[dhcp] Set to {\tt 'dhcp'} if you want to DHCP allocate the IP
+address.
+\item[netmask] IP netmask.
+\item[gateway] IP address for the gateway (if any).
+\item[hostname] Set the hostname for the virtual machine.
+\item[root] Set the root device.
+\item[nfs\_server] IP address for the NFS server.
+\item[nfs\_root] Path of the root filesystem on the NFS server.
+\item[extra] Extra string to append to the kernel command line.
+\item[restart] Three possible options:
+ \begin{description}
+ \item[always] Always restart the domain, no matter what
+ its exit code is.
+ \item[never] Never restart the domain.
+ \item[onreboot] (restart the domain if it requests reboot).
+ \end{description}
+\end{description}
-\item[XenLinux] Official name for the port of the Linux kernel
- that runs on Xen.
+For additional flexibility, it is also possible to include Python
+scripting commands in configuration files. An example of this is the
+\path{xmexample} file in order to handle the {\tt vmid} variable.
-\end{description}
-\part{Advanced Topics}
+%\part{Advanced Topics}
-\chapter{Advanced Network Configuration}
+\chapter{Network Configuration}
For simple systems with a single ethernet interface with a simple
configuration, the default installation should work `out of the
some special configuration.
The purpose of this chapter is to describe the mechanisms provided by
-xend to allow a flexible configuration for Xen's virtual networking.
+\xend to allow a flexible configuration for Xen's virtual networking.
\section{Xen networking scripts}
Xen's virtual networking is configured by 3 shell scripts. These are
-called automatically by Xend when certain events occur, with arguments
+called automatically by \xend when certain events occur, with arguments
to the scripts providing further contextual information. These
scripts are found by default in \path{/etc/xen}. The names and
locations of the scripts can be configured in \path{xend-config.sxp}.
\subsection{\path{network}}
-This script is called once when Xend is started and once when Xend is
+This script is called once when \xend is started and once when \xend is
stopped. Its job is to do any advance preparation required for the
-Xen virtual network when Xend starts and to do any corresponding
-cleanup when Xend exits.
+Xen virtual network when \xend starts and to do any corresponding
+cleanup when \xend exits.
In the default configuration, this script creates the bridge
`xen-br0' and moves eth0 onto that bridge, modifying the routing
In configurations where the bridge already exists, this script could
be replaced with a link to \path{/bin/true} (for instance).
-When Xend exits, this script is called with the {\tt stop} argument,
+When \xend exits, this script is called with the {\tt stop} argument,
which causes it to delete the Xen bridge and remove {\tt eth0} from
it, restoring the normal IP and routing configuration.
This script can be customized to properly deal with more complicated
bridging setups.
-\chapter{Advanced Scheduling Configuration}
+\chapter{Scheduler Configuration}
\section{Scheduler selection}
%% There are two possible types of privileges: IO privileges and
%% administration privileges.
-\section{Driver domains (IO Privileges)}
+\section{Driver domains (I/O Privileges)}
-IO privileges can be assigned to allow a domain to drive PCI devices
-itself. This is used to support driver domains.
+I/O privileges can be assigned to allow a domain to directly access
+PCI devices itself. This is used to support driver domains.
Setting backend privileges is currently only supported in SXP format
config files. To allow a domain to function as a backend for others,
be a {\tt backend} element of the form {\tt (backend ({\em type}))}
where {\tt \em type} may be either {\tt netif} or {\tt blkif},
according to the type of virtual device this domain will service.
-After this domain has been built, Xend will connect all new and
+After this domain has been built, \xend will connect all new and
existing {\em virtual} devices (of the appropriate type) to that
backend.
not need to be hidden --- they are hidden implicitly, since guest OSes
do not need to configure them.
-\section{XenLinux Options}
+\section{XenLinux Boot Options}
{\bf xencons=xxx}
Specify the device node to
exec /sbin/init "$@" <>/dev/console 2>&1
\end{verbatim}
+%$ XXX SMH: font lock fix :-)
+
The one slight complication with the above is that
\path{/sbin/portmap} is dynamically linked against
\path{/usr/lib/libwrap.so.0} Since this is in \path{/usr}, it won't
statically linked C program would solve this problem.
+
+
+\chapter{Glossary of Terms}
+
+\begin{description}
+\item[Atropos] One of the CPU schedulers provided by Xen.
+ Atropos provides domains with absolute shares
+ of the CPU, with timeliness guarantees and a
+ mechanism for sharing out `slack time'.
+
+\item[BVT] The BVT scheduler is used to give proportional
+ fair shares of the CPU to domains.
+
+\item[Exokernel] A minimal piece of privileged code, similar to
+ a {\bf microkernel} but providing a more
+ `hardware-like' interface to the tasks it
+ manages. This is similar to a paravirtualising
+ VMM like {\bf Xen} but was designed as a new
+ operating system structure, rather than
+ specifically to run multiple conventional OSs.
+
+\item[Domain] A domain is the execution context that
+ contains a running { \bf virtual machine }.
+ The relationship between virtual machines
+ and domains on Xen is similar to that between
+ programs and processes in an operating
+ system: a virtual machine is a persistent
+ entity that resides on disk (somewhat like
+ a program). When it is loaded for execution,
+ it runs in a domain. Each domain has a
+ { \bf domain ID }.
+
+\item[Domain 0] The first domain to be started on a Xen
+ machine. Domain 0 is responsible for managing
+ the system.
+
+\item[Domain ID] A unique identifier for a { \bf domain },
+ analogous to a process ID in an operating
+ system. Apart from domain
+
+\item[Full virtualisation] An approach to virtualisation which
+ requires no modifications to the hosted
+ operating system, providing the illusion of
+ a complete system of real hardware devices.
+
+\item[Hypervisor] An alternative term for { \bf VMM }, used
+ because it means `beyond supervisor',
+ since it is responsible for managing multiple
+ `supervisor' kernels.
+
+\item[Live migration] A technique for moving a running virtual
+ machine to another physical host, without
+ stopping it or the services running on it.
+
+\item[Microkernel] A small base of code running at the highest
+ hardware privilege level. A microkernel is
+ responsible for sharing CPU and memory (and
+ sometimes other devices) between less
+ privileged tasks running on the system.
+ This is similar to a VMM, particularly a
+ {\bf paravirtualising} VMM but typically
+ addressing a different problem space and
+ providing different kind of interface.
+
+\item[NetBSD/Xen] A port of NetBSD to the Xen architecture.
+
+\item[Paravirtualisation] An approach to virtualisation which requires
+ modifications to the operating system in
+ order to run in a virtual machine. Xen
+ uses paravirtualisation but preserves
+ binary compatibility for user space
+ applications.
+
+\item[Shadow pagetables] A technique for hiding the layout of machine
+ memory from a virtual machine's operating
+ system. Used in some {\bf VMM}s to provide
+ the illusion of contiguous physical memory,
+ in Xen this is used during
+ {\bf live migration}.
+
+\item[Virtual Machine] The environment in which a hosted operating
+ system runs, providing the abstraction of a
+ dedicated machine. A virtual machine may
+ be identical to the underlying hardware (as
+ in { \bf full virtualisation }, or it may
+ differ, as in { \bf paravirtualisation }.
+
+\item[VMM] Virtual Machine Monitor - the software that
+ allows multiple virtual machines to be
+ multiplexed on a single physical machine.
+
+\item[Xen] Xen is a paravirtualising virtual machine
+ monitor, developed primarily by the
+ Systems Research Group at the University
+ of Cambridge Computer Laboratory.
+
+\item[XenLinux] Official name for the port of the Linux kernel
+ that runs on Xen.
+
+\end{description}
+
+
\end{document}